package com.yj.cmp.sdk.fusioncompute.compute.vm.vo;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @author yang
 */
@NoArgsConstructor
@Data
public class VmListVo {


    @SerializedName("total")
    private Integer total;
    @SerializedName("vms")
    private List<VmsDTO> vms;

    @NoArgsConstructor
    @Data
    public static class VmsDTO {
        @SerializedName("cdRomStatus")
        private String cdRomStatus;
        @SerializedName("clusterName")
        private String clusterName;
        @SerializedName("clusterUrn")
        private String clusterUrn;
        @SerializedName("createTime")
        private String createTime;
        @SerializedName("description")
        private String description;
        @SerializedName("drStatus")
        private Integer drStatus;
        @SerializedName("group")
        private String group;
        @SerializedName("hostName")
        private String hostName;
        @SerializedName("hostUrn")
        private String hostUrn;
        @SerializedName("hugePage")
        private String hugePage;
        @SerializedName("idle")
        private Integer idle;
        @SerializedName("initSyncStatus")
        private Integer initSyncStatus;
        @SerializedName("isBindingHost")
        private Boolean isBindingHost;
        @SerializedName("isLinkClone")
        private Boolean isLinkClone;
        @SerializedName("isTemplate")
        private Boolean isTemplate;
        @SerializedName("location")
        private String location;
        @SerializedName("locationName")
        private String locationName;
        @SerializedName("minCompatibleimcSetting")
        private String minCompatibleimcSetting;
        @SerializedName("name")
        private String name;
        @SerializedName("objectPrivs")
        private List<?> objectPrivs;
        @SerializedName("params")
        private ParamsDTO params;
        @SerializedName("pvDriverStatus")
        private String pvDriverStatus;
        @SerializedName("rpoStatus")
        private Integer rpoStatus;
        @SerializedName("status")
        private String status;
        @SerializedName("toolInstallStatus")
        private String toolInstallStatus;
        @SerializedName("toolsVersion")
        private String toolsVersion;
        @SerializedName("uri")
        private String uri;
        @SerializedName("urn")
        private String urn;
        @SerializedName("uuid")
        private String uuid;
        @SerializedName("vmConfig")
        private VmConfigDTO vmConfig;
        @SerializedName("vmType")
        private Integer vmType;

        @NoArgsConstructor
        @Data
        public static class ParamsDTO {
            @SerializedName("snapshotNum")
            private String snapshotNum;
        }

        @NoArgsConstructor
        @Data
        public static class VmConfigDTO {
            @SerializedName("nics")
            private List<NicsDTO> nics;
            @SerializedName("numaNodes")
            private Integer numaNodes;
            @SerializedName("properties")
            private PropertiesDTO properties;

            @NoArgsConstructor
            @Data
            public static class PropertiesDTO {
            }

            @NoArgsConstructor
            @Data
            public static class NicsDTO {
                @SerializedName("ip")
                private String ip;
                @SerializedName("ipList")
                private String ipList;
                @SerializedName("ips6")
                private List<?> ips6;
                @SerializedName("mac")
                private String mac;
                @SerializedName("sequenceNum")
                private Integer sequenceNum;
            }
        }
    }
}
